#ifndef IMU_DEVICE_H
#define IMU_DEVICE_H

#include "../driver/driver_usart.h"
#include "../include/tool/log.h"
#include <string>
#include <thread>
#include <vector>

/**********************FDILink通信协议************************/
// IMU指令类别
#define DATA_IMU  0x40  // 经过校准的IMU数据2.1MSG_IMU
#define DATA_AHRS 0x41  // AHRS数据
#define DATA_INS  0x42  // INS/GPS数据
#define DATA_ORIG 0x58  // 传感器原始数据
// 传感器的的数据结束帧和起始帧
#define DATA_BEGIN 0xFC  // 传感器的数据起始帧 
#define DATA_END 0xFD  // 传感器的数据结束帧
/************************************************************/


class C_imuDevice
{
private:
    /* data */
    SerialDriver *m_serial;
    std::vector<uint8_t> m_UsartBuffer;
    std::vector<uint8_t> cache_buffer;
public:
    /* data */
    uint8_t *m_recvBuf; // 储存串口接收到的数据

    /* function */
    C_imuDevice(const char *_path, int _speed);
    ~C_imuDevice();
    int32_t getUsartData(std::vector<uint8_t> &dataBuf); // 读取串口数据接口
};

#endif
